<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('operation_types', function (Blueprint $table) {
            $table->id();

            // 基本信息
            $table->string('code')->unique(); // 操作类型代码
            $table->string('name'); // 操作类型名称
            $table->text('description')->nullable(); // 描述

            // 分类信息
            $table->string('category'); // 分类 (user, system, business, security等)
            $table->string('module_name'); // 所属模块

            // 属性信息
            $table->enum('severity', ['low', 'medium', 'high', 'critical'])->default('low'); // 严重程度
            $table->boolean('requires_audit')->default(false); // 是否需要审计
            $table->boolean('is_sensitive')->default(false); // 是否敏感操作
            $table->boolean('requires_log')->default(true); // 是否需要记录日志

            // 配置信息
            $table->json('config')->nullable(); // 配置信息
            $table->json('metadata')->nullable(); // 元数据

            // 状态信息
            $table->boolean('is_active')->default(true); // 是否启用
            $table->integer('sort_order')->default(0); // 排序

            $table->timestamps();

            // 索引
            $table->index(['category', 'is_active']);
            $table->index(['module_name', 'is_active']);
            $table->index(['severity', 'is_active']);
            $table->index(['requires_audit', 'is_active']);
            $table->index(['is_sensitive', 'is_active']);
            $table->index('is_active');
            $table->index('sort_order');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('operation_types');
    }
};
